Otázka č. 13 - Správa procesů
Správa procesů
Proces
- Procesy patří mezi základní prostředky všech OS
- Proces popisujeme z různých pohledů, které se navzájem doplňují
3 základní pohledy
Genetický
- Proces je instancí programu
- Program je nejčastěji reprezentován souborem, který obsahuje kód aplikace a její iniciální data( spustitelný soubor )
Dynamický
- Proces je postupným vykonáváním instrukcí
- Proces ovlivňuje a může být ovlivňován prostředky a okolím
Systémový pohled
-
Udržuje informace o užívaných prostředcích a jejich stavech
-
Důležitou vlastností procesu je jeho jednoznačná identifikace mezi všemi ostatními procesy
-
Proces z dynamického hlediska předpokládá změnu stavu, po provedení každé instrukce
-
Závislost budoucích stavů na stavu aktuálním je velmi vysoká
Kontext procesu
- Souhrn stavů všech prostředků, které proces v danou chvíli využívá
- Kontext se musí ukládat i obnovovat v rámci přepínání procesů při multitáskingu a to by trvalo až vteřiny o Řešení – Vyhražený prostředek
Vyhražený prostředek
- Vytvořena iluze že prostředek je využíván výhradně jedním procesem
- Je rozdělen a přidělován procesům
- Není nutné ukládat a obnovovat jeho stav
Průběh života procesu
- Proces začíná ve stavu Nový[N]
- Končí ve stavu Zombie[Z]
- Většinu života však proces stráví však ve dvou základních cyklech
- Kratší obsahuje stavy Wait[W] ( proces čeká na procesor )
- Running[R] kdy proces běží
- 2 podstavy
- RU a RK podle aktuální úrovně privilegovanosti
- Delší cyklus navíc obsahuje stav Sleep[S] (proces čeká na externí událost)
New[N]
-
Proces si alokuje své paměťové regiony v LAP (je mu přidělena paměť)
-
Nový proces je vždy vytvářen v podstatě vždy vytvářen jako požadavek jiného procesu
-
Na popud jiného procesu
-
Na základě požadavku uživatele
-
Na základě požadavku OS
-
Rodičovský proces zavolá systémovou službu, po vytvoření nového dětského procesu rutiny této služby nový proces vytvoří
-
- Vytvoření záznamu v tabulce procesů
-
- Alokace logických prostředků, především paměti
-
Během celé této doby se proces nachází ve stavu New[N], ale v této chvíli není schopen běhu
-
Teprve po úplném vytvoření je proces přesunut do stavu Waiting[W] a tím začíná jeho samostatná existence
-
Oba procesy(rodič i dítě) jsou zcela nezávislé a nemají žádné zvláštní vztahy
Waiting[W]
- Připravený přejít do stavu běžící Running[R]
- Jsou zde procesy, které jsou připraveny na vykonání, ale musí čekat na procesor, který je v danou chvíli obsazen
- Proto jsou procesy ve stavu waiting organizovány do jedinné fronty FIFO - tato fronta je prioritní(s předbíháním)
Běžící proces[ Running ]
- V jednoprocesorovém systému existuje právě jeden běžící proces.
- Běžící proces může běžet buď v režimu o neprivilegovaném( uživatelském ) o nebo privilegovaném( jádra )
- Proces může opustit tento stav o dobrovolně (vzdá se procesoru a přechází do SLEEPINGu)- čeká na událost o Nedobrovolně - je-li mu odebrán
Zablokovaný proces[ SLEEPING ]
-
Proces se zde nachází pokud dobrovolně opustil procesor a čeká na systémovou událost
-
Mezi hlavní typy událostí patří:
-
Vstupní událost na vstupní periferii( pohyb myši, stisk klávesy, příchod paketu… )
-
Výstupní událost( zápis na disk, odeslání znaku na monitor )
-
Uvolnění fyzického/logického prostředku
-
Uvolnění synchronizačního prostředku
-
Při přechodu do stavu SLEEPING( zablokování procesu ) by měl proces využívat minimum dalších prostředků, protože by je zbytečně blokoval
-
Ve stavu sleeping se může nachzet více procesů čekajících na stejný vyhrazený prostředek
-
Pro jejich uvolňování existují 2 mechanisny
-
Fronta čekajících procesů - procesy čekající na prostředek jsou řazeny do fronty a po uvlonění prostředku je pouze první z nich( nejdéle čekající ) odblokován
-
Probuďte se a předbíhejte - probuzeny jsou všechny procesy a o tom který proces prostředek získá rozhoduje absolutní priorita
Proces Mátoha[ Zombie ]
- Finální stádium procesu
- Ze stavu zombie nevede cesta zpět a proces v něm zůstává až do svého úplného odstranění
- Procesu jsou při přechodu do tohoto stavu odebrány všechny prostředky
- 3 Příčiny
- Vražda
- Proces je ukončen jiným procesem( pouze běžícím )
- Do stavu Zombie přechází ze stavu WAITING/SLEEPING
- Uživatel smí zabíjet pouze své vlastní procesy
- Sebevražda
- běžící proces zavolá systémovou službu pro své ukončení( většinou exit )
- je přesunut do stavu zombie z RUNNINGu
- Smrtelný úraz
- chyba v kódu
- Vražda
Vlákna(Threads)
- Vlákna procházejí stejnými stavy jako procesy.
- Voláním služby jádra lze vytvořit v procesu nové vlákno
- Proces obsahuje
- Hlavní vlákno
- Může obsahovat vedlejší vlákna
- Více vláken v jednom procesu se nazývá multithreading
- jednotlivá vlákna mohou v rámci procesu vykonávat různé činnosti
- Čtení, zapisování, zpracování dat
- Vykreslování výstupu na obrazovce a síťovou komunikaci
- Nebo stejnou činnost nad různými daty
- U počítačů s více procesory nebo na vícejádrových procesorech mohou tyto činnosti probíhat současně (paralelně)
- V případech jednojádrového procesoru
- Kvaziparalelně (rychlým přepínáním mezi vlákny se vytváří zdání paralelismu
- Obdobou procesů, sdílejí však datový region, což usnadňuje jejich vzájemné působení, protože mohou komunikovat prostřednictvím globálních statických proměnných
- Hlavní nevýhoda - globální zablokování
- Jestliže dojde v jenom z vláken k zablokování procesu, jsou pozastavena i ostatní vlákna procesu
Multitasking
- Správa procesů
- Více souběžně běžících v láken v jednom procesu
- Efekt skutečného multitáskingu je při dostatečně rychlé výměně procesů( milisekundy ) iluze souběžného běhu více procesů i na jednoprocesorových strojích
- Vlákna jednoho procesu sdílí paměťový prostor a další systémové prostředky
- Sdílená paměť zjednodušuje komunikaci mezi vlákny
Kooperativní multitásking
- Proces se dostane na procesor a uvolní jej až bude chtít (dobrovolně - kooperativně)
- K výměně procesů dochází pouze ve službách jádra
- Nevýhoda například když běžící proces vstoupí do nekonečné smyčky
Dispečer
- Speciální rutina
- Rozhoduje který proces bude obnoven – připuštěn na procesor
Idle proces
- V situaci že neexistuje žádný proces, který by chtěl na procesor je zavolán Idle proces
- Volá v nekonečném cyklu dispeřera, který vybírá procesy ke připuštění na procesor
Preemptivní multitásking
- Zde o přidělování a výměně procesů na procesoru rozhoduje operační systém
- Přidělování procesoru probíhá na základě priorit procesů
Časovač
- V pravidelných intervalech(100X – 1000x /s) vyvolá přerušení aktuálně běžícího procesu
Prioritní fronta
- Priorita v rozsahu [-20, 20]
- Nižší číslo znamená vyšší priorita
- U procesů se stejnou prioritou je funkce prioritní funkce stejná jako u klasické fronty FIFO
- Při neshodě priorit procesů ve frontě předbíhají ty procesy, jejichž priorita je nižší.
Statická priorita (SP)
- Je dána typem procesu a závažností
- Stejná po celou dobu existence procesu
Dynamická priorita (DP)
-
Začíná na 0
-
S každým cyklem kdy zůstává ve frontě priorita roste (číslo se snižuje)
-
Výpočet celkové/aktuální priority AP = SP + DP Nulová je u procesů, které do fronty nově vstoupili Snižování priority je u běžícího procesu